一、基本操作题(共四小题,第1和2题是7分、第3和4题是8分)
在考生目录下完成如下操作:
1. 打开"订货管理"数据库,并将表order_list添加到该数据库中。
2. 在"订货管理"数据库中建立表order_detail,表结构描述如下:
订单号 字符型(6)
器件号 字符型(6)
器件名 字符型(16)
单价 浮动型(10.2)
数量 整型
3. 为新建立的order_detail表建立一个普通索引,索引名和索引表达式均是"订单号"。
4. 建立表order_list和表order_detail间的永久联系(通过"订单号"字段)。
解答:
1、方法1:命令方法
在命令窗口直接输入下列两条命令:open database 订货管理
add table order_list
方法2:菜单方法
单击“文件”菜单,选择“打开”项。在文件类型中选择“数据库”,单击“订货管理”,单击“确定”即打开了数据库,并进入到数据库设计器。
在数据库设计器中的空白位置,单击鼠标右键,在弹出的快捷菜单中单击“添加”命令。将题目要求的自由表添加到数据库中。
2、方法1:菜单操作。在数据库设计器的空白处单击鼠标右键,在弹出的菜单中选择“新建表”,进入“表设计器”后,分别输入各字段的字段名、类型、宽度和小数位数,最后单击“确定”按钮。
方法2:命令方法,在命令窗口中直接输入如下命令:
create table order_detail(订单号 C(6),器件号 C(6),器件名 C(16),单价 N(10,2))
3、方法1:菜单方法。打开order_detail表的设计器,选择索引页框,输入索引名、选择索引类型、输入索引表达式,然后单击“确定”按钮。
方法2:命令方法。在命令窗口中直接输入如下命令:
index on 订单号 tag 订单号
4、首先打开数据库设计器。通过拖动索引建立表间永久关系。
二、简单应用(2小题,每题20分,计40分)
在考生目录下完成如下简单应用:
1. 将order_detail1表中的全部记录追加到order_detail表中,然后用SQL SELECT语句完成查询:列出所有订购单的订单号、订购日期、器件号、器件名和总金额(按订单号升序,订单号相同再按总金额降序),并将结果存储到results表中(其中订单号、订购日期、总金额取自order_list表,器件号、器件名取自order_detail表)。
解答:
追加记录:
close all
use order_detail1
append from order_detail
SQL查询部分可以用查询设计器的方法:
首先将要操作的两个表添加到查询设计器:(order_list和order_detail)
选择输出字段,注意各表字段来源按试题要求进行:其中订单号、订购日期、总金额取自order_list表,器件号、器件名取自order_detail表,设置排序依据,设置输出去向到表results。确定后,运行查询即可。
方法2:在命令框中直接输入SQL语句:
SELECT Order_list.订单号, Order_list.订购日期, Order_list.总金额,;
Order_detail.器件号, Order_detail.器件名;
FROM 订货管理!order_list INNER JOIN 订货管理!order_detail ;
ON Order_list.订单号 = Order_detail.订单号;
ORDER BY Order_list.订单号, Order_list.总金额 DESC;
INTO TABLE results.dbf
2. 打开modi1.prg命令文件,该命令文件包含3条SQL语句,每条SQL语句中都有一个错误,请改正之(注意:在出现错误的地方直接改正,不可以改变SQL语句的结构和SQL短语的顺序)
modi1.prg程序如下:
&&所有器件的单价增加5元
UPDATE order_detail1 SET 单价 WITH 单价 + 5
&&计算每种器件的平均单价
SELECT 器件号,AVG(单价) AS 平均价 FROM order_detail1 ORDER BY 器件号 INTO CURSOR lsb
&&查询平均价小于500的记录
SELECT * FROM lsb FOR 平均价 < 500
解答:
错误1:WITH应改为:“=”
错误2、ORDER改为:GROUP
错误3、FOR应改为:WHERE
三、综合应用(1小题,计30分)
在做本题前首先确认在基础操作中已经正确地建立了order_detail表,在简单应用中已经成功地将记录追加到order_detail表。当order_detail表中的单价修改后,应该根据该表的"单价"和"数量"字段修改order_list表的总金额字段,现在有部分order_list记录的总金额字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为od_mod的表中(与order_list表结构相同,自己建立),然后根据order_detail表的"单价"和"数量"字段修改od_mod表的总金额字段(注意一个od_mod记录可能对应几条order_detail记录),最后od_mod表的结果要求按总金额升序排序,编写的程序最后保存为prog1.prg。
解答:
Prog1.prg程序代码如下:
set talk off
use order_detail in 1
index on 订单号 tag xx
set order to tag xx
use order_list in 2
select 2
set relation to 订单号 into order_detail
copy for 总金额<>a.单价*a.数量 to od_mod1
replace all 总金额 with a.单价*a.数量
use od_mod1
sort on 总金额 to od_mod
set talk on
附:本题相关表


ORDER_LIST1.DBF
